import { NestFactory } from '@nestjs/core';
import { NestExpressApplication } from '@nestjs/platform-express';
import { join } from 'path';
// import rateLimit from 'express-rate-limit';
import { AppModule } from './app.module';
import consoleGraph from './consoleGraph'
/* webSocker */
import { WsAdapter } from './ws/ws.adapter'
import * as colors from 'colors'

/* 主入口文件 */
async function bootstrap() {
  const app = await NestFactory.create<NestExpressApplication>(AppModule);

  // node设置跨域
  app.enableCors({
    // 请求头开启跨域
    "origin": "*",
    "methods": "GET, HEAD, PUT, PATCH, POST, DELETE",
  })
  // app.use(
  //   rateLimit({
  //     windowMs: 15 * 60 * 1000, // 15分钟
  //     max: 1000, // 限制15分钟内最多只能访问1000次
  //   })
  // )

  // 使用网关
  app.useWebSocketAdapter(new WsAdapter(app))

  /** 配置开放访问静态资源 */
  // app.useStaticAssets('public');
  app.useStaticAssets(join(__dirname, '..', 'public'), { prefix: '/static/' });  //设置虚拟路径
  app.setBaseViewsDir(join(__dirname, '..', 'views')); // 放视图的文件 在controller中访问控制并 render的文件
  app.setViewEngine('ejs'); // 模板语言，利用普通的 JavaScript 代码生成 HTML 页面。使用ejs来渲染HTML文件，类似与 JSP
  
  console.log( colors.rainbow(consoleGraph) )
  console.log("link is %o", "http://localhost:3535");


  await app.listen(3535);
}
bootstrap();


// async function bootstrap2() {
//   const app = await NestFactory.create(AppModule);
//   await app.listen(3536);
// }
// bootstrap2();